﻿
using System.Collections.Generic;
using Newtonsoft.Json;

namespace InstaSharp.Models {

    public class User2Response
    {
        /// <summary>
        /// Gets or sets the user.
        /// </summary>
        /// <value>
        /// The follows.
        /// </value>
        [JsonMapping("user", JsonMapping.MappingType.Class)]
        public User2 Data { get; set; }
    }

    public class Count2
    {
        /// <summary>
        /// Gets or sets the follows.
        /// </summary>
        /// <value>
        /// The follows.
        /// </value>
        [JsonMapping("count", JsonMapping.MappingType.Primitive)]
        public int Count { get; set; }
    }

    public class Caption2
    {
        /// <summary>
        /// Gets or sets the media list.
        /// </summary>
        /// <value>
        /// The data.
        /// </value>
        [JsonMapping("edges", JsonMapping.MappingType.Collection)]
        public List<Caption3> Nodes { get; set; }
    }

    public class Comment2
    {
        /// <summary>
        /// Gets or sets the media list.
        /// </summary>
        /// <value>
        /// The data.
        /// </value>
        [JsonMapping("node", JsonMapping.MappingType.Class)]
        public Caption Node { get; set; }
    }

    public class Caption3
    {
        /// <summary>
        /// Gets or sets the media list.
        /// </summary>
        /// <value>
        /// The data.
        /// </value>
        [JsonMapping("node", JsonMapping.MappingType.Class)]
        public Caption Node { get; set; }
    }

    public class Medias
    {
        /// <summary>
        /// Gets or sets the Medias count.
        /// </summary>
        /// <value>
        /// The follows.
        /// </value>
        [JsonMapping("count", JsonMapping.MappingType.Primitive)]
        public int Count { get; set; }
        /// <summary>
        /// Gets or sets the media list.
        /// </summary>
        /// <value>
        /// The data.
        /// </value>
        [JsonMapping("nodes", JsonMapping.MappingType.Collection)]
        public List<Media2> Nodes { get; set; }
    }

    /// <summary>
    /// The User for Instagram
    /// </summary>
    public class User2
    {
        /// <summary>
        /// Gets or sets the identifier.
        /// </summary>
        /// <value>
        /// The identifier.
        /// </value>
        [JsonMapping("id", JsonMapping.MappingType.Primitive)]
        public long Id { get; set; }
        /// <summary>
        /// Gets or sets the username.
        /// </summary>
        /// <value>
        /// The username.
        /// </value>
        [JsonMapping("username", JsonMapping.MappingType.Primitive)]
        public string Username { get; set; }
        /// <summary>
        /// Gets or sets the counts.
        /// </summary>
        /// <value>
        /// The counts.
        /// </value>
        [JsonMapping("follows", JsonMapping.MappingType.Class)]
        public Count2 Follows { get; set; }
        /// <summary>
        /// Gets or sets the counts.
        /// </summary>
        /// <value>
        /// The counts.
        /// </value>
        [JsonMapping("followed_by", JsonMapping.MappingType.Class)]
        public Count2 FollowedBy { get; set; }
        /// <summary>
        /// Gets or sets the images.
        /// </summary>
        /// <value>
        /// The counts.
        /// </value>
        [JsonMapping("media", JsonMapping.MappingType.Class)]
        public Medias Media { get; set; }
        /// <summary>
        /// Gets or sets the profile picture.
        /// </summary>
        /// <value>
        /// The profile picture.
        /// </value>
        [JsonProperty("profile_pic_url")]
        [JsonMapping("profile_pic_url", JsonMapping.MappingType.Primitive)]
        public string ProfilePicture { get; set; }
        /// <summary>
        /// Gets or sets the profile external_url.
        /// </summary>
        /// <value>
        /// The profile external_url.
        /// </value>
        [JsonMapping("external_url", JsonMapping.MappingType.Primitive)]
        public string ExternalUrl { get; set; }

        /// <summary>
        /// Gets or sets the Private.
        /// </summary>
        /// <value>
        /// </value>
        [JsonMapping("is_private", JsonMapping.MappingType.Primitive)]
        public bool Private { get; set; }
        /// <summary>
        /// Gets or sets the Verified.
        /// </summary>
        /// <value>
        /// </value>
        [JsonMapping("is_verified", JsonMapping.MappingType.Primitive)]
        public bool Verified { get; set; }
        /// <summary>
        /// Gets or sets the full_name.
        /// </summary>
        /// <value>
        /// The full_name.
        /// </value>
        [JsonMapping("full_name", JsonMapping.MappingType.Primitive)]
        public string FullName { get; set; }
        /// <summary>
        /// Gets or sets the full_name.
        /// </summary>
        /// <value>
        /// The full_name.
        /// </value>
        [JsonMapping("biography", JsonMapping.MappingType.Primitive)]
        public string Bio { get; set; }

    }
}
